package reflect;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
/**
 * 通过反射机制获取Method对应的方法信息
 */
public class ReflectDemo6 {
    public static void main(String[] args) throws Exception {
        Class cls = Class.forName("reflect.Person");
        Method m = cls.getMethod("say", String.class, int.class);

        String name = m.getName();  //获取方法名
        System.out.println("方法名："+name);
        Class returnType = m.getReturnType();   //获取方法返回值类型
        System.out.println("返回类型："+returnType);
        int count = m.getParameterCount();  //获取参数个数
        System.out.println("方法参数个数："+count);

        Class[] types = m.getParameterTypes();  //获取参数类型
        for (Class type : types) {
            System.out.println("参数类型："+type);
        }
        System.out.println("--------------------------------");
        int modifiers = m.getModifiers();   //获取方法的访问修饰符
        switch (modifiers){
            case Modifier.PUBLIC :
                System.out.println("是一个公开方法");
                break;
            case Modifier.PROTECTED :
                System.out.println("是一个受保护的方法");
                break;
            case Modifier.PRIVATE :
                System.out.println("是一个私有方法");
                break;
            default :
                System.out.println("default");
        }
    }
}
